package jp.co.dailyReport;

import java.util.Calendar;
import java.util.HashMap;

import org.apache.log4j.Logger;

/**
 * dailyReport.properties から設定を読み込み、保持するシングルトンクラスです。
 * その他、サイト全体に関わる定数もこのクラスで定義します。
 */
public class Globals {
	private static Logger logger = Logger.getLogger(Globals.class);
	
	private static HashMap hash = null;
	
	private static Calendar serviceStartDate = null;
                
	
	/**
	 * コンストラクタ。クラス外からのインスタンス生成を禁止します。
	 */
	private Globals() {
	}
	
	/**
	 * dailyReport.properties に設定した値を、指定したキーをもとに取得して返します。
	 * 
	 * @param key
	 * @return 文字列
	 */
	public static String get(String key) {
		
		if(hash == null) {
			Globals.load();
		}

		String value = (String)hash.get(key);
		
		// 値がnull なら警告
		if(value == null) {
			logger.warn("Value for key: " + key + " is null.");
		}
		return value;
	}

	/**
	 * dailyReport.properties から設定を読み込みます。
	 * 
	 * @return true→dailyReport.propertiesが存在する場合、false→dailyReport.propertiesが存在しない場合、例外が発生した場合
	 */
	public static boolean load() {
		try{
			ResourceLoader loader = new ResourceLoader("dailyReport");
			HashMap newHash = loader.load();
			if(newHash == null){
				logger.fatal("Failed in loading 'dailyReport.properties'.");
				return false;
			}else{
				hash = newHash;
				return true;
			}
		}catch(Exception e){
			logger.fatal("Failed in loading 'dtportal.properties'.");
			return false;
		}
	}


	/**
	 * S-in日を取得します。
	 * 
	 * @return

	public static Calendar getServiceStartDate(){
		if(serviceStartDate == null){
			serviceStartDate = CalendarSimulator.getInstance();
			try{        	
				SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
				serviceStartDate.setTime(format.parse(get("SERVICE_START_DATE")));
			}catch (ParseException pe){
				logger.fatal(pe.toString());
			}
		}
		return serviceStartDate;
	}
	 */


}
